home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / compress / shrink / shrink.txt
Text File  |  1994-03-09  |  3KB  |  76 lines

  1. CUT VB/WIN 3.0 EXE's SIZE BY UP TO 50%
  2. ======================================
  3.  
  4. How can you cut the size of your EXE file by 50% without changing one line of code?
  5.  
  6. I recently reduced a 2.5 mg EXE file to 1.4 mg without changing one line of code!! 
  7.  
  8.  
  9. HISTORY
  10. =======
  11.  
  12. The other day I was working on a VB/WIN 3.0 App that uses a lot of bitmaps that are
  13. attached to image and picture controls at design time. The project was up to 2.5 mg 
  14. and still growing. I was using 16 color bitmaps designed in a paint package that 
  15. allows me to design in 256 colors and dither to 16 colors (for the smallest color
  16. DIBs possible).
  17.  
  18. The Bitmap files were nice and small and other image packages verified that the 
  19. bitmaps were indeed 16 color bitmaps. But I noticed the Binary files VB created 
  20. were extremely large when bitmaps are added at design time. But when the picture 
  21. controls were emptied and the form resaved, the form files were small. 
  22.  
  23. I tried switching to text mode for the form and the resulting .FRX binary file 
  24. was still very large. Over twice the size of the bitmaps assigned to the form -- 
  25. what gives??
  26.  
  27. After a little experimenting, I discovered what VB/WIN was doing behind the scenes.
  28.  
  29. Even though I was loading 16 color (small) bitmaps and assigning them to the picture
  30. controls at design time, VB was storing them in 256 color mode in the binary form file 
  31. (as well as the FRX file in text mode). This resulted in a consistent 45-50% increase 
  32. in binary storage that was then "compiled" into the final EXE. WOW, what a waste!
  33.  
  34. I then dug out an old 16 color video board and driver set and changed my system. I put 
  35. the accelerated 256 color board and driver onto the shelf for a while. I then opened the
  36. VB Project files and accessed each form that contained each 16 color bitmaps and did 
  37. the folowing:
  38.  
  39.     1) unassigned each bitmap them from their respective picture controls
  40.     2) saved the form (without any bitmaps)
  41.     3) reassigned the bitmaps to the pitcure controls
  42.     4) saved the form again (with the bitmaps)
  43.     5) generated a new EXE for the project
  44.  
  45. (NOTE - the two saves involved - they were required to get VB to change the binary files 
  46. that stored the bitmap images)
  47.  
  48. Not only did the form's binary files decrease by 50%, the same reduction was seen 
  49. in the final EXE. Up to 50% savings!!
  50.  
  51. For some reason, it appears Microsoft assumes that whatever color mode you are 
  52. designing in is the one you wish the application to run in. They do not take 
  53. into account the color level the bitmap images on the form are in.
  54.  
  55. I wonder what would happen if I put my accelerated video board back in and opened up 
  56. windows and VB in 24 bit color mode. Would the EXE grow to 10 or 15MG even though I am
  57. using 16 color bitmaps?? 
  58.  
  59. Would end users running my app in 16 color mode suffer from 256-to-16 color dithering
  60. or 24 bit-to-16 color dithering time lags?
  61.  
  62. I have looked through all the materials I can find on VB and have not found anything
  63. on this subject or how to control this problem other than desiging in 16 color mode. 
  64.  
  65. If anyone else has run across this "design assumption feature" of VB/WIN 3.0 and have 
  66. anything else to add, please e-mail me at 72074,2677.
  67.  
  68. I hope this discussion saves someone out there some space in there EXE files. 
  69.  
  70. Jay J. Falconer
  71. Bitwise Software International, Inc.
  72. 72074,2677
  73.  
  74.  
  75.  
  76.